#if !defined(__DAEMON_SUB_PROCESS_H)
#define __DAEMON_SUB_PROCESS_H

#include <sys/types.h>

// 最大失败次数
#define MAX_FAIL_COUNT 10
// #define EXE_PATH "/home/zkevin/桌面/gate-way/gateway_test"
#define EXE_PATH "/usr/bin/gateway"

typedef struct
{
    pid_t pid;       // 子进程pid
    char *cmd_param; // 子进程命令参数名
    int fail_count;  // 失败次数
} Suprocess_t;

/**
 * @brief 初始化子进程
 *
 * @param cmd_param 子进程命令参数
 * @return Suprocess_t* 子进程结构体指针
 */
Suprocess_t *daemon_sub_process_init(char *cmd_param);

/**
 * @brief 检查并启动子进程
 *
 * @param sub_process 子进程结构体指针
 * @return int 0成功，-1失败
 */
int daemon_sub_process_checkStart(Suprocess_t *sub_process);

/**
 * @brief 结束子进程
 *
 * @param sub_process 子进程结构体指针
 * @return int 0成功，-1失败
 */
int daemon_sub_process_stop(Suprocess_t *sub_process);

#endif //__DAEMON_SUB_PROCESS_H